package good;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2023-03-01
 * Time: 22:32
 */

//依赖倒置 正确案例
public class DependencyInversion {
    public static void main(String[] args) {
        //客户端无需改变 运行结果和之前的一样
        Person person = new Person();
        person.receive(new Email());

        person.receive(new WeiXin());
    }
}
//定义一个接口
interface IReceiver{

    public String getInfo();
}

class Email implements IReceiver{
    public String getInfo(){
        return "电子邮件信息:hello,word";
    }
}

//增加一个新的接收方式
class WeiXin implements IReceiver{
    public String getInfo(){
        return "微信消息:hello,ok";
    }
    //新增一个接收方式之后 Person不用做任何改变
}

//方式二
class Person{
    //接收消息的功能
    //接收 不在接收Email 要和接口产生一个依赖
    public void receive(IReceiver receiver){
        //此时此刻 这个方法 是和接口产生的依赖 接口下面的子类 或者说是细节 发生了改变也不影响
        System.out.println(receiver.getInfo());
    }
}